package main.scala.demo

import org.apache.spark.{SparkConf, SparkContext}

/**
  * BaseRDD
  *
  * @author zhangyimin
  * @version 1.0
  */
object BaseRDD {

  def main(args: Array[String]): Unit = {
    //配置
    val conf=new SparkConf()
    conf.setAppName("wordCount")
    conf.setMaster("local")
    //创建一个sparkContext
    val sc=new SparkContext(conf)

    //数值RDD
    //创建一个数组,并且数组元素乘以2后排序
    val rdd1=sc.parallelize(Array(1,66,22,55,33))
    val rdd2=rdd1.map(_*2).sortBy(x=>x,false)
    rdd2.foreach(println)
    //    for(s <- rdd2)println(s)
    //    val rdd3=rdd2.filter(x=>(x>50))
    val rdd3=rdd2.filter(_>50)
    rdd3.foreach(println)
    //字符rdd
    val rdd4=sc.parallelize(Array("a b c","d e f","x y z"))
    val rdd5=rdd4.flatMap(_.split(" "))
    rdd5.foreach(println)
    //集合运算
    val rdd6=sc.parallelize(List(1,2,3,4,5,6,7,8,9,10))

    val rdd7=sc.parallelize(List(6,7,8,9,10))
    //交集
    val rdd8=rdd7.intersection(rdd6)
    //并集
    val rdd9=rdd7.union(rdd6)
    //去重
    val rdd10=rdd9.distinct()
    rdd8.foreach(println)
    rdd9.foreach(println)
    println("以下是去重:")
    rdd10.foreach(println)

    val rdd11=sc.parallelize(List(("k1",1),("k2",2),("k3",3),("k4",4)))

    val rdd12=sc.parallelize(List(("k5",5),("k6",6),("k7",7),("k7",7)))

    val rdd13 =rdd11 union rdd12

    val rdd14=rdd13.groupByKey

    rdd13.foreach(println)

    println("以下是groupByKey的结果")
    rdd14.foreach(println)

    sc.stop();
  }

}
